#include <iostream>
#include "RingQueue.hpp"
#include <pthread.h>
#include <unistd.h>


void* Consumer(void* args)
{
    RingQueue<int>* rq = static_cast<RingQueue<int>*>(args);

    // 消费
    int t;
    rq->Pop(&t);
    // 处理
    std::cout << "Consumer-> " << t << std::endl;

}

void* Productor(void* args)
{
    RingQueue<int>* rq = static_cast<RingQueue<int>*>(args);

    // 构造数据
    int x = rand()%10 + 1; //[1,10]
    // 生产
    rq->Push(x);

    std::cout << "Productor-> " << x << std::endl;
}

int main()
{
    srand(time(nullptr));

    // 环形队列
    RingQueue<int>* rq = new RingQueue<int>();
    // 启动两个线程
    pthread_t c, p;
    pthread_create(&c, nullptr, Consumer, rq);
    pthread_create(&p, nullptr, Productor, rq);
    return 0;
}